home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / gfx / show / jpegAGAsrc21.lha / jpegAGAsrc / jpegAGA / fromWB.c < prev    next >
C/C++ Source or Header  |  1995-01-14  |  4KB  |  181 lines

  1. /* Start from Workbench */
  2.  
  3. #include <workbench/startup.h>
  4. #include <workbench/workbench.h>
  5.  
  6. #ifndef __GNUC__
  7. #include <pragmas/dos_pragmas.h>
  8. #include <pragmas/icon_pragmas.h>
  9. #include <pragmas/exec_pragmas.h>
  10. #include <clib/dos_protos.h>
  11. #include <clib/icon_protos.h>
  12. #include <clib/exec_protos.h>
  13. #else
  14. #include <inline/dos.h>
  15. #include <inline/icon.h>
  16. #include <inline/exec.h>
  17. #endif
  18.  
  19. #include <stdio.h>
  20. #include <stdlib.h>
  21. #include <string.h>
  22.  
  23. #define MAXFILES 500
  24.  
  25. #ifdef __GNUC__
  26. #define MYSTRCMP strcasecmp
  27. #define MYSTRNCMP strncasecmp
  28. #else
  29. #define MYSTRCMP strcmp
  30. #define MYSTRNCMP strncmp
  31. #endif
  32.  
  33. struct Library *IconBase = NULL;
  34.  
  35. extern struct WBArg *wb_arg;
  36. extern int NumPictures;
  37. extern BPTR olddir;
  38.  
  39. /* Flags */
  40. extern short WBFiles;
  41.  
  42. struct WBFlags
  43. {
  44.  int scale;
  45.  short VGAenable;
  46.  short SUPER72enable;
  47.  short SMRenable;
  48.  short GrayEnable;
  49.  short NoSmooth;
  50.  short DCTFast;
  51.  short ScaleFit;
  52. };
  53.  
  54. extern struct WBFlags WBFlags;
  55. extern struct WBFlags OldFlags;
  56.  
  57.  
  58. void ParseToolTypes(struct WBArg *wbarg, int initial);
  59.  
  60. BPTR olddir;
  61.  
  62. void FillWB(struct WBStartup *argmsg)
  63. {
  64.  LONG ktr;
  65.  
  66.  /* open icon.library, will be closed by CloseDisplay() */
  67.  
  68.  if(!IconBase)
  69.  {
  70.    if(!(IconBase = OpenLibrary((UBYTE *)"icon.library",33)))
  71.    {
  72.      printf("Could not open icon.library V33 or higher.\n");
  73.      return;
  74.    }
  75.  }
  76.  
  77.  wb_arg = argmsg->sm_ArgList;
  78.  
  79.  if(wb_arg->wa_Lock != 0)
  80.  {
  81.    olddir = CurrentDir(wb_arg->wa_Lock);
  82.  }
  83.  
  84.  ParseToolTypes(wb_arg, 1);
  85.  
  86.  if(olddir)
  87.  {
  88.    CurrentDir(olddir);
  89.    olddir=0;
  90.  }
  91.  
  92.  if(argmsg->sm_NumArgs <= 1) return;
  93.  
  94.  WBFiles=1;
  95.  
  96.  NumPictures = argmsg->sm_NumArgs - 1;
  97.  
  98.  /* printf("NumPictures: %d\n", NumPictures); */
  99.  wb_arg++; 
  100. }
  101.  
  102. void ParseToolTypes(struct WBArg *wbarg, int initial)
  103. {
  104.  struct DiskObject *dobj;
  105.  UBYTE **toolarray;
  106.  char *s;
  107.  
  108.  /* initialize OldFlags even if tool type processing fails */
  109.  
  110.  if(initial) memcpy(&OldFlags, &WBFlags, sizeof(struct WBFlags));
  111.  
  112.  if(!IconBase)
  113.  {
  114.    if(!(IconBase = OpenLibrary((UBYTE *)"icon.library",33)))
  115.    {
  116.      printf("Could not open icon.library V33 or higher.\n");
  117.      return;
  118.    }
  119.  }
  120.  
  121.  if(wbarg)
  122.  if((*wbarg->wa_Name) && (dobj=GetDiskObject(wbarg->wa_Name)))
  123.  {
  124.    toolarray = (UBYTE **)dobj->do_ToolTypes;
  125.    
  126.    if(s=(char *)FindToolType(toolarray, "ARGS"))
  127.    {
  128.      int i=0;
  129.      #ifndef __GNUC__
  130.      strupr(s);
  131.      #endif
  132.      while(1)
  133.      {
  134.        while(s[i] != 0 && s[i] != '-') i++;
  135.        if(s[i] == '-')
  136.        {
  137.          /* printf("Argument found.\n"); */
  138.          if(!MYSTRNCMP(&s[i], "-GRAY", 5)) WBFlags.GrayEnable=1;
  139.  
  140.          else if(!MYSTRNCMP(&s[i], "-VGA", 4)) WBFlags.VGAenable=1;
  141.  
  142.          else if(!MYSTRNCMP(&s[i], "-SUPER72", 8)) WBFlags.SUPER72enable=1;
  143.  
  144.          else if(!MYSTRNCMP(&s[i], "-NOSMOOTH", 9)) WBFlags.NoSmooth=1;
  145.  
  146.          else if(!MYSTRNCMP(&s[i], "-FIT", 4)) WBFlags.ScaleFit=1;
  147.  
  148.          else if(!MYSTRNCMP(&s[i], "-DCT FAST", 9)) WBFlags.DCTFast=1;
  149.  
  150.          else if(!MYSTRNCMP(&s[i], "-DCT INT", 8)) WBFlags.DCTFast=0;
  151.  
  152.          else if(!MYSTRNCMP(&s[i], "-SCALE 1/1", 10)) WBFlags.scale=1;
  153.  
  154.          else if(!MYSTRNCMP(&s[i], "-SCALE 1/2", 10)) WBFlags.scale=2;
  155.  
  156.          else if(!MYSTRNCMP(&s[i], "-SCALE 1/4", 10)) WBFlags.scale=4;
  157.  
  158.          else if(!MYSTRNCMP(&s[i], "-SCALE 1/8", 10)) WBFlags.scale=8;
  159.          
  160.          else if(!MYSTRNCMP(&s[i], "-SMR", 4) && initial) WBFlags.SMRenable=1;
  161.  
  162.          else if(!MYSTRNCMP(&s[i], "-NOGRAY", 7) && !initial) WBFlags.GrayEnable=0;
  163.  
  164.          else if(!MYSTRNCMP(&s[i], "-NOVGA", 6) && !initial) WBFlags.VGAenable=0;
  165.  
  166.          else if(!MYSTRNCMP(&s[i], "-NOSUPER72", 10) && !initial) WBFlags.SUPER72enable=0;
  167.  
  168.          else if(!MYSTRNCMP(&s[i], "-SMOOTH", 7) && !initial) WBFlags.NoSmooth=0;
  169.  
  170.          else if(!MYSTRNCMP(&s[i], "-NOFIT", 6) && !initial) WBFlags.ScaleFit=0;
  171.  
  172.          i++;
  173.        }
  174.        else break;
  175.      }
  176.      if(initial) memcpy(&OldFlags, &WBFlags, sizeof(struct WBFlags));
  177.    }
  178.    FreeDiskObject(dobj);
  179.  }
  180. }
  181.